home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / dev / e / 2b_CrtvE_src.lha / internal1.s < prev    next >
Text File  |  2001-01-29  |  6KB  |  327 lines

  1. ;;VAR
  2.  
  3. NUMBUFS = 4
  4. BUFADD:     DC.L    MINIMUM_ACODE
  5.  
  6. FIXED       = 0
  7. REALLOCATABLE   = 1
  8. EXPANDABLE  = 2
  9.  
  10.  
  11. BTAB:   DC.L    CURINTERIM,.1,REALLOCATABLE
  12.     DC.L    CURACODE,.3,FIXED
  13.     DC.L    HEAP,.5,EXPANDABLE
  14.     DC.L    LABM,.6,REALLOCATABLE
  15. .1: DC.B    "intermediate code",0
  16. .3: DC.B    "libraries/generated code",0
  17. .5: DC.B    "general/identifier",0
  18. .6: DC.B    "label",0
  19.     EVEN
  20.  
  21. DEBUGDATA:
  22.     DC.L    OLIST
  23.     DC.L    PROCLIST
  24.     DC.L    IDENTHASH
  25. DBUGV:
  26.     DC.L    0
  27. DBUGA:
  28.     DC.L    0
  29.     DC.L    MODINFOLIST
  30.     DC.L    CODELIST
  31.     DC.L    MEMLIST
  32.     DC.L    HEAP
  33.     DC.L    MACROHASH
  34.  
  35. INITBUFFERS:
  36.     MOVE.W  #1,CURSPOT
  37.     MOVE.L  EBUFSIZE,D0
  38.     LSR.L   #1,D0           ; *1.5+50k
  39.     ADD.L   EBUFSIZE,D0
  40.     ADD.L   BUFADD(PC),D0
  41.     MOVE.L  D0,CURACODE+20
  42.     BSR REALLOC1
  43.     BSR ALLOC3
  44.     BSR ALLOC5
  45.     BSR REALLOC6
  46.     MOVE.L  HEAP+20,GENERALSIZE
  47.     RTS
  48.  
  49. REALLOC1:
  50.     MOVEM.L D6/A5,-(A7)
  51.     LEA CURINTERIM,A5
  52.     BSR REALLOC
  53.     MOVEM.L (A7)+,D6/A5
  54.     RTS
  55.  
  56. ALLOC3:
  57.     MOVEM.L D6/A5,-(A7)
  58.     LEA CURACODE,A5
  59.     BSR REALLOC
  60.     MOVEM.L (A7)+,D6/A5
  61.     RTS
  62.  
  63. CHECK3:
  64.     MOVEM.L D6/A5,-(A7)
  65.     LEA CURACODE,A5
  66.     BSR CHECK
  67.     MOVEM.L (A7)+,D6/A5
  68.     RTS
  69.  
  70. ALLOC5:
  71.     MOVEM.L D6/A5,-(A7)
  72.     LEA HEAP,A5
  73.     BSR REALLOC
  74.     MOVEM.L (A7)+,D6/A5
  75.     RTS
  76.  
  77. EXPAND5:
  78.     MOVEM.L D6/A5,-(A7)
  79.     LEA HEAP,A5
  80.     BSR EXPANDBUF
  81.     MOVEM.L (A7)+,D6/A5
  82.     RTS
  83.  
  84. REALLOC6:
  85.     MOVEM.L D6/A5,-(A7)
  86.     LEA LABM,A5
  87.     BSR REALLOC
  88.     MOVEM.L (A7)+,D6/A5
  89.     RTS
  90.  
  91. COOKIE  = $BE
  92.  
  93. NEW:
  94.     MOVEM.L D1/D2/A0/A1/A6,-(A7)    ; SIZE-->D0-->ADDR
  95.     ADDQ.L  #8,D0
  96.     ADDQ.L  #1,D0
  97.     MOVE.L  D0,D2
  98.     MOVEQ   #0,D1
  99.     MOVE.L  4.W,A6
  100.     JSR -198(A6)
  101.     TST.L   D0
  102.     BEQ.S   .EXX
  103.     MOVE.L  D0,A0
  104.     ADDQ.L  #8,D0
  105.     MOVE.B  #COOKIE,-1(A0,D2.L)
  106.     MOVE.L  MEMLIST(PC),(A0)
  107.     MOVE.L  D2,4(A0)
  108.     MOVE.L  A0,MEMLIST
  109. .EXX:   MOVEM.L (A7)+,D1/D2/A0/A1/A6
  110.     RTS
  111.  
  112. MEMLIST:  DC.L    0
  113.  
  114. DISPOSE:              ; ADR-->D0
  115.     MOVEM.L D0/D1/A0/A1/A2/A6,-(A7)
  116.     TST.L   D0
  117.     BEQ.S   .1
  118.     SUBQ.L  #8,D0
  119.     LEA MEMLIST(PC),A1
  120. .XL:MOVE.L  (A1),D1
  121.     BEQ.S   .1
  122.     MOVE.L  A1,A2           ; ADR TO LINK BACK TO
  123.     MOVE.L  D1,A1
  124.     CMP.L   D1,D0
  125.     BNE.S   .XL
  126.     MOVE.L  4(A1),D0        ; MEMSIZE
  127.     MOVE.L  (A1),(A2)       ; LINK BACK
  128.     MOVE.L  4.W,A6
  129.     JSR -210(A6)
  130. .1: MOVEM.L (A7)+,D0/D1/A0/A1/A2/A6
  131.     RTS
  132.  
  133.  
  134. REALLOC:              ; CALLED FROM EVERYWHERE
  135.     MOVE.L  8(A5),D6
  136.     ADD.L   12(A5),D6
  137.     SUB.L   16(A5),D6
  138.     CMP.L   (A5),D6
  139.     BMI.S   .1
  140.     RTS
  141. .1: MOVEM.L D0/D1/D7/A0/A1/A6,-(A7)
  142.     MOVE.L  12(A5),D0
  143.     ADD.L   20(A5),D0       ; NEW SIZE
  144.     MOVE.L  D0,D6           ; D6=SIZE
  145.     BSR NEW
  146.     TST.L   D0
  147.     BEQ.S   .ER
  148.     MOVE.L  D0,D7           ; D7=ADR
  149.     TST.L   12(A5)
  150.     BEQ.S   .2          ; NO COPYING/FREEMEM
  151.     MOVE.L  D7,A1
  152.     MOVE.L  8(A5),A0
  153.     MOVE.L  12(A5),D0
  154.     MOVE.L  4.W,A6
  155.     JSR -630(A6)        ; COPYMEMQUICK
  156.     MOVE.L  8(A5),D0
  157.     BSR DISPOSE
  158. .2: TST.L   (A5)            ; NEW SETTINGS
  159.     BNE.S   .3
  160.     MOVE.L  D7,(A5)
  161.     BRA.S   .4
  162. .3: MOVE.L  (A5),D0
  163.     SUB.L   8(A5),D0
  164.     ADD.L   D7,D0
  165.     MOVE.L  D0,(A5)
  166. .4: MOVE.L  D7,8(A5)
  167.     MOVE.L  D6,12(A5)
  168.     MOVEM.L (A7)+,D0/D1/D7/A0/A1/A6
  169.     RTS
  170. .ER:    MOVEM.L (A7)+,D0/D1/D7/A0/A1/A6
  171.     BRA iERROR38
  172.  
  173. CHECK:
  174.     MOVE.L  8(A5),D6
  175.     ADD.L   12(A5),D6
  176.     SUB.L   16(A5),D6
  177.     CMP.L   (A5),D6
  178.     BMI iERROR37
  179.     RTS
  180.  
  181. EXPANDBUF:
  182.     MOVE.L  8(A5),D6
  183.     ADD.L   12(A5),D6
  184.     SUB.L   16(A5),D6
  185.     CMP.L   (A5),D6
  186.     BMI .1
  187.     RTS
  188. .1: MOVE.L  D0,-(A7)
  189.     MOVE.L  20(A5),D0
  190.     MOVE.L  D0,12(A5)
  191.     ADD.L   D0,GENERALSIZE
  192.     BSR NEW
  193.     TST.L   D0
  194.     BEQ iERROR38
  195.     MOVE.L  D0,(A5)
  196.     MOVE.L  D0,8(A5)
  197.     MOVE.L  (A7)+,D0
  198.     RTS
  199.  
  200. FREEBUFFERS:
  201.     MOVE.L  4.W,A6
  202.     MOVE.L  MEMLIST(PC),A2
  203. .XL:MOVE.L  A2,D0
  204.     BEQ.S   .X
  205.     MOVE.L  A2,A1
  206.     MOVE.L  4(A2),D0
  207.     MOVE.L  (A2),A2
  208.     JSR -210(A6)
  209.     BRA.S   .XL
  210. .X: CLR.L   MEMLIST
  211.     RTS
  212.  
  213. CHECKCOOKIES:
  214.     MOVE.L  4.W,A6
  215.     MOVE.L  MEMLIST(PC),A2
  216. .XL:MOVE.L  A2,D0
  217.     BEQ.S   .X
  218.     MOVE.L  A2,A1
  219.     MOVE.L  4(A2),D0
  220.     MOVE.L  (A2),A2
  221.     CMPI.B  #COOKIE,-1(A1,D0.L)
  222.     BEQ.S   .1
  223.     ADDQ.W  #1,BUFSPOT
  224.     CLR.L   MEMLIST         ; BECAUSE OF CORRUPTED POINTERS?
  225.     BRA.S   .X
  226. .1: BRA.S   .XL
  227. .X: TST.W   BUFSPOT
  228.     BEQ .x
  229.     JMP DAMAGEDCOOKIES
  230. .x: RTS
  231.  
  232. SWAPVALUES:
  233.     JSR FIXOBJTYPES
  234.     MOVE.L  ACODE,CURACODE
  235.     BSR GETLINEBUF
  236.     RTS
  237.  
  238. GETLINEBUF:
  239.     BTST    #5,CODEPREFS+1
  240.     BEQ.S   .1
  241.     MOVEQ   #0,D0
  242.     MOVE.W  MAXLINENUM(PC),D0
  243.     LSL.L   #3,D0
  244.     ADD.L   #1000,D0
  245.     BSR NEW
  246.     TST.L   D0
  247.     BEQ iERROR38
  248.     MOVE.L  D0,LINEBUF
  249.     MOVE.L  D0,A0
  250.     MOVE.L  #$3F1,(A0)+     ; HUNKID
  251.     CLR.L   (A0)+           ; HUNKLEN, _LATER_.
  252.     CLR.L   (A0)+           ; ADD2HUNK=0
  253.     MOVE.L  #"LINE",(A0)+
  254.     ADDQ.L  #4,A0
  255.     MOVE.L  A0,A2
  256.     MOVE.L  #NAMEBUF,A1
  257. .XL:MOVE.B  (A1)+,(A0)+
  258.     BNE.S   .XL
  259.     MOVE.B  #".",-1(A0)
  260.     MOVE.B  #"e",(A0)+
  261.     CLR.B   (A0)+
  262.     CLR.B   (A0)+
  263.     CLR.B   (A0)+
  264.     MOVE.L  A0,D0
  265.     SUB.L   A2,D0
  266.     LSR.L   #2,D0
  267.     MOVE.L  D0,-4(A2)
  268.     LSL.L   #2,D0
  269.     LEA 0(A2,D0.L),A0
  270.     MOVE.L  A0,LINEBUFCUR
  271.     MOVE.L  A0,LINEBUFCURSTART  ; IF THE SAME LATER, DON'T SAVE
  272. .1: RTS
  273.  
  274. ADDLINEDBG:
  275.     TST.W   PROCF
  276.     BEQ.S   .1
  277.     MOVEM.L D0/A0,-(A7)
  278.     MOVE.L  LINEBUFCUR(PC),A0
  279.     MOVEQ   #0,D0
  280.     MOVE.W  LINENUM,D0
  281.     ADDQ.L  #1,D0
  282.     MOVE.L  D0,(A0)+
  283.     MOVE.L  A4,D0
  284.     SUB.L   ACODE,D0
  285.     MOVE.L  D0,(A0)+
  286.     MOVE.L  A0,LINEBUFCUR
  287.     BTST    #6,CODEPREFS+1
  288.     BEQ.S   .3
  289.     MOVE.W  .2(PC),(A4)+        ; ADD A NOP
  290. .3: MOVEM.L (A7)+,D0/A0
  291. .1: RTS
  292. .2: NOP
  293.  
  294. DEBUGLIST:    DC.L    0
  295. MAXLINENUM:   DC.W    0
  296. LINEBUF:      DC.L    0
  297. LINEBUFCUR:   DC.L    0
  298. LINEBUFCURSTART:  DC.L    0
  299.  
  300. SETVARS:
  301.     MOVE.L  #BRACKETSBUF,CURBRACK
  302.     MOVE.L  #HASHBUFS,A0        ; CLEAR HASHTABLES
  303.     MOVE.L  #ENDHASHBUFS,D0
  304.     SUB.L   A0,D0
  305.     LSR.L   #2,D0
  306.     SUBQ.L  #1,D0
  307.     MOVEQ   #0,D1
  308. .CLR:   MOVE.L  D1,(A0)+
  309.     DBRA    D0,.CLR
  310.     MOVE.L  DIRNAMEX,A1     ; STD MODULE PATH
  311.     LEA STDDIR(PC),A0
  312. .1: MOVE.B  (A0)+,(A1)+
  313.     BNE.S   .1
  314.     MOVE.W  #-1,KILLFLAG        ; FROM NOW, DELETE IF PROBLEMS
  315.     LEA SELFNAME(PC),A0
  316.     HASH    A0,D0,D1
  317.     LSL.L   #2,D0
  318.     ADD.L   #IDENTHASH,D0
  319.     MOVE.L  D0,SELFHASHADR
  320.     RTS
  321.  
  322. STDDIR:
  323.     DC.B    'emodules:',0
  324.  
  325. ;*-*
  326.  
  327.